package br.uvv.sao.dao;

import java.util.List;

import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;

import br.uvv.sao.domain.QuestaoBase;
import br.uvv.sao.enums.TipoGrauDificuldade;
import br.uvv.sao.util.DAOException;

public class QuestaoBaseDAO extends DAO {
	
	private static final long serialVersionUID = 4078178715546114279L;

	public Integer rowCount() throws DAOException {
		return rowCount(QuestaoBase.class);
	}

	@SuppressWarnings("unchecked")
	public List<QuestaoBase> listar(int first, int pageSize, String sortField,
			boolean sortOrder, String varCabecalho,
			TipoGrauDificuldade varDificuldade, Long varIdAssunto) throws DAOException {
		Criterion[] filtros = new Criterion[3];
		if (varCabecalho != null)
			filtros[0] = Restrictions.ilike("cabecalho", "%" + varCabecalho + "%");
		if (varDificuldade != null)
			filtros[1] = Restrictions.eq("grauDificuldade", varDificuldade);
		if (varIdAssunto != null)
			filtros[2] = Restrictions.eq("palavraChave", varIdAssunto);
		String[] fetchMode = { "alternativaBase" };
		return listPaginator(first, pageSize, sortField, sortOrder, QuestaoBase.class, fetchMode, filtros);
	}

}
